package com.xing.algorithm.string;

public class ReverseStr {

//    public static int reverse(int x) {
//        long tmp = x;
//        // 防止结果溢出
//        long result = 0;
//
//        while (tmp != 0) {
//            result = result * 10 + tmp % 10;
//            tmp = tmp / 10;
//        }
//
//        // 溢出判断
//        if (result < Integer.MIN_VALUE || result > Integer.MAX_VALUE) {
//            result = 0;
//        }
//
//        return (int) result;
//    }

    public static int reverse(int x) {
        if(x == 0) {
            return x;
        }

        long result = (long)x;
        char[] cs = String.valueOf(Math.abs(result)).toCharArray();

        for(int i = 0; i < cs.length/2; i ++) {
            char tmp = cs[i];
            cs[i] = cs[cs.length - i - 1];
            cs[cs.length - i - 1] = tmp;
        }

        result = Long.parseLong(String.valueOf(cs)) * (x > 0 ? 1 : -1);

        if(result > Integer.MAX_VALUE || result < Integer.MIN_VALUE) {
            result = 0;
        }

        return (int)result;
    }

    public static void main(String[] args) {
        System.out.println(reverse(-2147483648));
    }
}
